home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / SoundAndMusic / cmix / lib / buzz.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-02-25  |  490 b   |  25 lines

  1. #define  ABS(x) ((x < 0) ? (-x) : (x))
  2. #define EPS .1e-06
  3. float buzz(amp,si,hn,f,phs)
  4. float amp,si,hn,*f,*phs;
  5. {
  6.     register j,k;
  7.     float q,d,h2n,h2np1;
  8.     j = *phs;
  9.     k = (j+1) % 1024;
  10.     h2n = 2. * hn; 
  11.     h2np1 = h2n + 1.; 
  12.     q = (int)((*phs - (float)j) * h2np1)/h2np1;
  13.     d = *(f+j);
  14.     d += (*(f+k)-d)*q;
  15.     if(ABS(d) < EPS) q = amp;
  16.           else { 
  17.         k = (long)(h2np1 * *phs) % 1024;
  18.         q = amp * (*(f+k)/d - 1.)/h2n;
  19.         } 
  20.     *phs += si;
  21.     while(*phs >= 1024.)  
  22.         *phs -= 1024.;
  23.     return(q);
  24. }
  25.